var $dataInfo = $('#userAccountTable');

var ifSuperAdmin = false;
//防止表头与表格不对齐
$(window).resize(function () {
    $dataInfo.bootstrapTable('resetView');
});

$(function () {

    dataInfoInit();

    //判断是否是超管，普管则隐藏所属分公司列及筛选条件
    isSuperAdmin();
});


//普通管理员隐藏compName
function isSuperAdmin() {
    $.ajax({
        type: 'GET',
        dataType: "json",
        url: '/returnMoney/isSuperAdmin',
        cache: false,
        async: false,
        success: (function (data) {
            if (!data.data) {
                $dataInfo.bootstrapTable('hideColumn', 'companyName');
                //普管添加账号的时候不选公司、不允许筛选分公司
                $('#companyDiv').css('display', 'none');
                $('#companyName').css('display', 'none');
            }else {
                ifSuperAdmin = true;
            }
        }),
        error: (function (res) {
            alert("请求失败");
        })
    });
}


/**
 * 账号管理
 */
function dataInfoInit() {
    //先销毁表格
    $dataInfo.bootstrapTable('destroy');
    $dataInfo.bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/account/selectUserAccountPage',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'accountId',
        idField: 'accountId',
        pageSize: globalPageSize,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: globalPageList,//可供选择的每页的行数
        fixedColumns: true,     // 冻结列
        fixedNumber: 4,         // 左侧固定列
        // fixedRightNumber: 1,    // 右侧固定列

        queryParams: queryParams,//查询参数
        columns: [
            {title: '主键', field: 'accountId', visible: false},
            {title: 'userId', field: 'userId', visible: false},
            {title: '分公司ID', field: 'companyId', visible: false},
            {title: '序号', field: 'index', align: 'center', valign: 'middle', formatter: indexFormat},
            {title: '昵称', field: 'nickName', align: 'left', valign: 'middle'},
            {title: '用户名', field: 'userName', align: 'left', valign: 'middle'},
            {title: '账号名', field: 'userAccount', align: 'left', valign: 'middle'},
            {title: '所属分公司', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '账号状态', field: 'statusStr', align: 'left', valign: 'middle'},
            {title: '分机号', field: 'extensionNumber', align: 'left', valign: 'middle',
                editable: {
                    type: 'text',
                    title: '分机号',
                    //添加效验规则
                    validate: function (value) {
                        if (!value){
                            return '分机号不能为空';
                        }
                        var reg = /^[0-9]+$/; //只能输入数字
                        if(!reg.test(value)) {
                            return "请输入有效的分机号";
                        }
                    }
                }
            },
            // {title: '创建时间', field: 'createTm', align: 'left', valign: 'middle', formatter: dateFormat},
            {title: '操作', field: 'operate', align: 'left', events: operateEvents, formatter: genderOpt}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //加载成功时执行
            $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
        //编辑单元格后保存。
        //field 编辑的字段
        //row   编辑的当前行
        //oldValue  编辑前元素的值。
        onEditableSave: function (field, row, oldValue, $el) {
            $.ajax({
                type: "post",
                url: "/account/updateExtensionNumber",
                data:{
                    "accountId": row.accountId,
                    "extensionNumber": row.extensionNumber
                },
                dataType: 'JSON',
                success: function (data) {
                    if (data) {
                        if (data.data == 'U000000') {
                            $.alert('保存成功');
                            $dataInfo.bootstrapTable('updateCellById', {id: row.accountId, field: 'extensionNumber', value: row.extensionNumber});
                        } else if (data.data == 'U000002') {
                            $.alert('分机号也存在');
                            $dataInfo.bootstrapTable('updateCellById', {id: row.accountId, field: 'extensionNumber', value: oldValue});
                        } else if (data.data == 'U000003') {
                            $.alert('保存异常');
                            $dataInfo.bootstrapTable('updateCellById', {id: row.accountId, field: 'extensionNumber', value: oldValue});
                        } else {
                            $.alert('保存失败');
                            $dataInfo.bootstrapTable('updateCellById', {id: row.accountId, field: 'extensionNumber', value: oldValue});
                        }
                    }
                },
                error: function () {
                    $.alert('保存异常');
                    $dataInfo.bootstrapTable('updateCellById', {id: row.accountId, field: 'extensionNumber', value: oldValue});
                },
            });
        }
    });
}

/**
 * --列表序列号
 */
function indexFormat(value, row, index) {
    return index + 1;
}


/**
 * 自定义操作列内容
 */
function genderOpt(value, row, index) {
    if ("禁用" == row.statusStr){
        if(ifSuperAdmin){
            return [
                '<a type="button" id="disable" class="btn btn-xs btn-default m-r-5 show-btn" title="启用" onclick="enable(\''+row.accountId+'\');" data-toggle="tooltip">启用</a>'
            ].join('');
        } else {
            return [].join('');
        }
    } else {
        let options = [
            '<a type="button" id="initialPassword" class="btn btn-xs btn-default m-r-5 show-btn" title="重置密码" onclick="initialPassword(\''+row.accountId+'\');" data-toggle="tooltip">重置密码</a>',
            '<a type="button" id="bindCall" class="btn btn-xs btn-default m-r-5 show-btn" title="绑定电话" onclick="bindCall(\''+row.accountId+'\');" data-toggle="tooltip">绑定电话</a>',
            '<a type="button" id="detail" class="btn btn-xs btn-default m-r-5 show-btn" title="详细" data-toggle="tooltip"><i class="mdi mdi-eye"></i>详细</a>'
        ]
        if(row.onTheJobSituation == 1){//离职
            options.push('<a type="button" id="moveData" class="btn btn-xs btn-default m-r-5 show-btn" title="移交资料" onclick="moveData(\''+row.accountId+'\',\''+ row.userName +'\')" data-toggle="tooltip"></i>移交资料</a>')
        }else{
            options.push('<a type="button" id="resign" class="btn btn-xs btn-default m-r-5 show-btn" title="离职" onclick="resign(\''+row.accountId+'\');" data-toggle="tooltip"></i>离职</a>')
        }
        if(row.deactivate == 0){
            options.push('<a type="button" id="deactivate" class="btn btn-xs btn-default m-r-5 show-btn" title="停用" onclick="deactivate(\''+row.accountId+'\');" data-toggle="tooltip">停用</a>')
        }
        if(ifSuperAdmin){
            options.push('<a type="button" id="disable" class="btn btn-xs btn-default m-r-5 show-btn" title="禁用" onclick="disable(\''+row.accountId+'\');" data-toggle="tooltip">禁用</a>')
        }
        return options.join('');
    }

}

function searchUserAccountList() {
    $dataInfo.bootstrapTable('refreshOptions', {pageNumber: 1, queryParams: queryParams});
}

function bindCall(accountId){
    $('#accountId').val(accountId);
    //加载呼叫信息
    selectType();
    $('#addCallModal').modal('show');
}

//停用
function deactivate(accountId){
    $('#accountIdForDeac').val(accountId);
    $('.date-input').datepicker({
        language: "zh-CN",
        autoClose: true,
        clearBtn: true,
        todayHighlight: true,
        format: "yyyy-mm-dd"
    });
    $('#deacDiv').modal('show');
}

//保存停用相关信息
function saveDeac(){
    let param = {};
    param.accountId = $('#accountIdForDeac').val();
    param.deacType = $('#deacTypeSelect option:selected').val();
    param.deacToTime = $('#deacToTime').val();

    console.log(param)
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/account/saveDeacByAccountId',
        cache: false,
        async: true,
        data: param,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('停用成功！');
                $('#deacDiv').modal('hide');
                searchUserAccountList();//重新加载
            } else {
                $.alert("停用失败！");
            }
        }),
        error: (function (res) {
            $.alert("停用失败");
        })
    });
}

//移交资料
function moveData(accountId,userName){
    var title = "移交"+userName+"的资料"
    parent.$(parent.document).data('multitabs').create({
        iframe: true,
        title: title,
        url: "/front/user/moveData?accountId=" + accountId + "&userName=" + userName
    }, true);
}

//重置密码（重置为初始值）
function initialPassword(accountId){
    $.ajax({
        type: 'GET',
        dataType: "json",
        url: '/account/initialPassword?accountId='+accountId,
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('重置成功！');
            } else {
                $.alert("重置失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

//禁用
function disable(accountId){
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/account/disableByAccountId?accountId='+accountId,
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('禁用成功！');
                selectStatus();//重新加载
            } else {
                $.alert("禁用失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

//离职
function resign(accountId){
    console.log(1111)
    $.alert({
        title: '提示',
        content: "确定要离职吗？",
        buttons: {
            confirm: {
                text: '确认',
                btnClass: 'btn-primary',
                action: function () {
                    $.ajax({
                        type: 'POST',
                        dataType: "json",
                        url: '/account/resignByAccountId?accountId='+accountId,
                        cache: false,
                        async: false,
                        success: (function (data) {
                            if (data.code == '000000') {
                                $.alert('离职成功！');
                                selectStatus();//重新加载
                            } else {
                                $.alert("离职失败！");
                            }
                        }),
                        error: (function (res) {
                            $.alert("请求失败");
                        })
                    });
                }
            },
            cancel: {
                text: '取消',
                action: function () {
                }
            }
        }
    });
}

//启用
function enable(accountId){
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/account/enableByAccountId?accountId='+accountId,
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('启用成功！');
                selectStatus();//重新加载
            } else {
                $.alert("启用失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}
window.operateEvents = {
    //查看点击事件
    'click #detail': function (e, value, row, index) {
        parent.$(parent.document).data('multitabs').create({
            iframe: true,
            title: '详细',
            url: "/front/user/userInfo?userId=" + row.userId +"&bs=1"
        }, true);
    }
};

/**
 * 普通查询参数
 */
function queryParams(params) {
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort; //排序列名
    params.sortOrder = params.order;//排序方式
    //普通搜索条件
    params.accountStatus = $("input[name='accountStatus']:checked").val();  //全部 可用 禁用 停用
    params.userName = $.trim($('#userName').val());  //用户名
    params.companyName = $.trim($('#companyName').val());  //公司名
    params.userAccount = $.trim($('#searchUserAccount').val());// 账号
    params.extensionNumber = $.trim($('#extensionNumber').val());//分机号
    return params;
}

/**
 * 时间转换
 * @param value
 * @param row
 * @param index
 * @returns {string}
 */
function dateFormat(value, row, index) {
    if (value != null) {
        var date = new Date(value);
        var month = date.getMonth() + 1;
        var tian = date.getDate();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (tian >= 1 && tian <= 9) {
            tian = "0" + tian;
        }

        return date.getFullYear() + '-' + month + '-' + tian;
    }
}

/**
 * 全部/禁用/可用 切换
 */
function selectStatus() {
    $dataInfo.bootstrapTable('refreshOptions', {pageNumber: 1, queryParams: queryParams});
}

/**
 * 全国号码/本地号码 切换
 */
function selectType() {
    let type = $("input[name='callType']:checked").val();
    let accountId = $("#accountId").val();

    $.getJSON("/systemManager/callManager/getCallListsByUserList?type="+type+"&accountId="+accountId, function (data) {
        if (data.code == '000000') {
            var callTelNumOptionHtml = '';
            if(data.data.length > 0){
                callTelNumOptionHtml += '<option value="random">随机绑定</option>';
            }
            data.data.map(function (item) {
                callTelNumOptionHtml += '<option value="' + item.callId + '">' + item.telephoneNumber + '</option>';
            });
            $("#callSelect").html("");
            $('#callSelect').append(callTelNumOptionHtml);
            $('#callSelect').selectpicker('refresh');
        }
    });
}

/**
 * 绑定电话保存
 */
function savebindCall(){
    let param = {};
    param.accountId = $('#accountId').val();
    param.callId = $('#callSelect option:selected').val();
    param.type = $("input[name='callType']:checked").val();

    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/systemManager/callManager/bindCallId',
        cache: false,
        async: true,
        data: param,
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('绑定成功！');
                $('#addCallModal').modal('hide');
                searchUserAccountList();//重新加载
            } else {
                $.alert("绑定失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

/**
 * 新增账号弹窗
 */
function addUserAccount() {
    $('#addUserAccount').modal('show');
    getCompanyList();
}

/**
 * 加载公司下拉列表
 */
function getCompanyList() {
    $.getJSON("/company/getCompanyList", function (data) {
        if (data.code == '000000') {
            var optionArr = data.data;
            //公司搜索条件下拉框
            var searchCompanyOptionHtml = '<option value="">请选择公司</option>';
            optionArr.map(function (item, index) {
                searchCompanyOptionHtml += '<option value="' + item.companyId + '">' + item.companyName + '</option>';
            });
            $('#companySelect').html(searchCompanyOptionHtml);
            var selectDate = [];
            for (var i = 0, len = data.data.length; i < len; i++) {
                var company = data.data[i];
                var selectCompany = {};
                selectCompany.id = company.companyId;
                selectCompany.name = company.companyName;
                selectDate.push(selectCompany);
            }
            /*abs.render({
                elem: "#search",
                data: selectDate,
                init_value: [1],
                body_height: 300,
                checkbox: true,
                name: "test"
            });*/
            $('#searchoption-list').css('z-index',1000);
            $('#searchCompanySelect').selectpicker({
                sanitize: true,
                size: 8
            });
        }
    });
}

/**
 * 保存用户
 */
function saveUserAccount() {

    //用户名
    var userName =  $.trim($("#userNameAdd").val());
    //账号名
    var userAccount = $.trim($("#userAccount").val());
    //电话
    var userContact =  $.trim($("#phone").val());
    //邮箱
    var userEmail = $.trim($("#email").val());
    //公司id
    var companyId = $.trim($('#companySelect').val());
    //公司名称
    var companyName = $.trim($("#companySelect").find("option:selected").text());

    if(!userName){
        promptInfo("用户名不能为空!");
        return;
    }

    if(!userAccount){
        promptInfo("账号名不能为空!");
        return;
    }

    if(!companyId&&ifSuperAdmin){
        promptInfo("请选择公司!");
        return;
    }

    var jsonData = {
        "userName": userName,
        "userAccount": userAccount,
        "userContact": userContact,
        "userEmail": userEmail,
        "companyId": companyId,
        "companyName":companyName
    }


    $.ajax({
        url: '/account/addUserAccountAndUserInfo',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        success: (function (data) {
            if(data.code == '000000'){
                $.alert({
                    title: '提示',
                    content: '保存成功！',
                    buttons: {
                        confirm: {
                            text: '确认',
                            btnClass: 'btn-primary',
                            action: function () {
                                $('#addUserAccount').modal('hide');
                                $dataInfo.bootstrapTable('refreshOptions', {pageNumber: 1});
                            }
                        }
                    }
                });
            } else if(data.code == 'UA0001'){
                //账号名已经存在
                $.alert(data.message);
            }else {
                $.alert("保存失败");
            }
        }),
        error: (function (res) {
            $.alert("保存失败");
        })
    })

    /**
     * 提示信息
     * @param content  提示内容
     */
    function promptInfo(content) {
        $.alert({
            title: '温馨提示',
            content: content,
            buttons: {
                confirm: {
                    text: '确认',
                    btnClass: 'btn-primary'
                }
            }
        });
    }

}